<?php

namespace Mouta\SeowebBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Mouta\SeowebBundle\Entity\Usuario;
use Mouta\SeowebBundle\Entity\Pagina;
use Mouta\SeowebBundle\Entity\Categoria;
use Mouta\SeowebBundle\Entity\Asignacion;
use Mouta\SeowebBundle\Entity\Servicio;
use Mouta\SeowebBundle\Entity\Click;
use Mouta\SeowebBundle\Form\UsuarioType;
use Mouta\SeowebBundle\Form\ContactoType;
use Mouta\SeowebBundle\Form\DatosUserType;
use Mouta\SeowebBundle\Form\SitioType;
use Mouta\SeowebBundle\Form\SitiomodType;
use Mouta\SeowebBundle\Form\CreditoType;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

class ClickController extends Controller
{

    public function click_megustaAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $pagina = $em->getRepository('SeowebBundle:Pagina')->find($id);
        $click = $em->getRepository('SeowebBundle:Click')->findOneBy(array(
            'pagina' => $id
        ));
        $usuario = $this->get('security.context')->getToken()->getUser();


        if($usuario == $pagina->getUsuario()){
            $this->get('session')->setFlash('info',
                'Usted no pude realizar esta accion sobre sus sitios'
            );
            return $this->redirect($this->generateUrl('sitios'));
        }else{


            $asignacion = $em->getRepository('SeowebBundle:Asignacion')->findOneBy(array(
                'pagina' => $id,
                'servicio' => '1'
            ));

            if($asignacion->getCredito() > '0'){
                $asignacion->setCredito($asignacion->getCredito() - '1');
                $em->persist($usuario);


                $pagina = $em->getRepository('SeowebBundle:Pagina')->find($id);
                $serviciomegusta = $em->getRepository('SeowebBundle:Servicio')->find('1');
                $click = new Click();
                $click->setUsuario($usuario);
                $click->setPagina($pagina);
                $click->setServicio($serviciomegusta);
                $click->setEstado('true');
                $em->persist($click);


                $usuario->setCredito($usuario->getCredito() + '1');
                $em->persist($usuario);

                $clickrepetido = $em->getRepository('SeowebBundle:Click')->findOneBy(array(
                    'pagina' => $click->getPagina(),
                    'usuario' => $click->getUsuario(),
                    'servicio' => '1'
                ));

                if($clickrepetido){

                    $this->get('session')->setFlash('info',
                        'No se puede repetir esta accion en un mismo sitio'
                    );
                    return $this->redirect($this->generateUrl('sitios'));
                }else{
                    $this->get('session')->setFlash('info',
                        'La accion se realizo correctamente'
                    );
                    $em->flush();

                    return $this->redirect($this->generateUrl('sitios'));
                }

            }else{


                $this->get('session')->setFlash('info',
                    'Esta pagina no tiene creditos'
                );

                return $this->redirect($this->generateUrl('sitios'));
            }
        }


    }

    public function click_masunoAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $pagina = $em->getRepository('SeowebBundle:Pagina')->find($id);
        $click = $em->getRepository('SeowebBundle:Click')->findOneBy(array(
            'pagina' => $id
        ));
        /** @var $usuario Usuario */
        $usuario = $this->get('security.context')->getToken()->getUser();


        if($usuario == $pagina->getUsuario()){
            $this->get('session')->setFlash('info',
                'Usted no pude realizar esta accion sobre sus sitios'
            );
            return $this->redirect($this->generateUrl('sitios'));
        }else{


            $asignacion = $em->getRepository('SeowebBundle:Asignacion')->findOneBy(array(
                'pagina' => $id,
                'servicio' => '2'
            ));

            if($asignacion->getCredito() > '0'){
                $asignacion->setCredito($asignacion->getCredito() - '1');
                $em->persist($usuario);


                $pagina = $em->getRepository('SeowebBundle:Pagina')->find($id);
                $serviciomasuno = $em->getRepository('SeowebBundle:Servicio')->find('2');
                $click = new Click();
                $click->setUsuario($usuario);
                $click->setPagina($pagina);
                $click->setServicio($serviciomasuno);
                $click->setEstado('true');
                $em->persist($click);


                $usuario->setCredito($usuario->getCredito() + '1');
                $em->persist($usuario);

                $clickrepetido = $em->getRepository('SeowebBundle:Click')->findOneBy(array(
                    'pagina' => $click->getPagina(),
                    'usuario' => $click->getUsuario(),
                    'servicio' => '2'

                ));

                if($clickrepetido){

                    $this->get('session')->setFlash('info',
                        'No se puede repetir esta accion en un mismo sitio'
                    );
                    return $this->redirect($this->generateUrl('sitios'));
                }else{
                    $this->get('session')->setFlash('info',
                        'La accion se realizo correctamente'
                    );
                    $em->flush();

                    return $this->redirect($this->generateUrl('sitios'));
                }

            }else{


                $this->get('session')->setFlash('info',
                    'Esta pagina no tiene creditos'
                );

                return $this->redirect($this->generateUrl('sitios'));
            }
        }


    }

}